#include "VistaMiniBar.h"
#include <string>
#include "Constantes.h"

VistaMiniBar::VistaMiniBar(std::string color, bool visible, int x, int y, t_orientacion orientacion): VistaFichaTablero(color,visible,x,y) {
    tipo = "minibar";
    this->orientacion=orientacion;
    std::string path = elegirColor();
    iniciarImagen();
}

VistaMiniBar::~VistaMiniBar() { }

void VistaMiniBar::iniciarImagen() {
    if (visible) {
        buffer=obtenerImagen(0);
    } else {
        buffer=obtenerImagen(45);
    }
}

void VistaMiniBar::setOrientacion(t_orientacion orientacion){
    this->orientacion=orientacion;
}

t_orientacion VistaMiniBar::getOrientacion(){
return this->orientacion;
}

std::string VistaMiniBar::getType(){
    return tipo + orientacion + " " + color;
}

Glib::RefPtr<Gdk::Pixbuf> VistaMiniBar::obtenerImagen(int nroBuffer) {
    Glib::RefPtr<Gdk::Pixbuf> imagen_buffer;
        if (color == CBLUE) {
            if (orientacion==VERTICAL)
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarBlueV[nroBuffer];
            else
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarBlueH[nroBuffer];
        } else if (color == CRED) {
            if (orientacion==VERTICAL)
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarRedV[nroBuffer];
            else
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarRedH[nroBuffer];
        } else if (color == CGREEN) {
            if (orientacion==VERTICAL)
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarGreenV[nroBuffer];
            else
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarGreenH[nroBuffer];
        } else if (color == CYELLOW) {
            if (orientacion==VERTICAL){
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarYellowV[nroBuffer];
            } else {
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarYellowH[nroBuffer];
             }
        } else if (color == CVIOLET) {
            if (orientacion==VERTICAL)
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarVioletV[nroBuffer];
            else
                imagen_buffer=
                 VistaFichaTablero::buffersMiniBarVioletH[nroBuffer];
        } else {
            Log::loguear(MERROR, "Consulta de minibar invalida!");
        }
return imagen_buffer;
}


std::string VistaMiniBar::elegirColor() {
    std::string path = "../common/img/";

    if (color == "blue") {
        if (orientacion==VERTICAL)
            path += "blue-minibar-v.png";
        else
            path += "blue-minibar-h.png";
    } else if (color == "red") {
        if (orientacion==VERTICAL)
            path += "red-minibar-v.png";
        else
            path += "red-minibar-h.png";
    } else if (color == "yellow") {
        if (orientacion==VERTICAL)
            path += "yellow-minibar-v.png";
        else
            path += "yellow-minibar-h.png";
    } else if (color == "green") {
        if (orientacion==VERTICAL)
            path += "green-minibar-v.png";
        else
            path += "green-minibar-h.png";
    } else {
        if (orientacion==VERTICAL)
            path += "violet-minibar-v.png";
        else
            path += "violet-minibar-h.png";
    }

    return path;
}
